package com.zjcloud.jwgl.domain;

import java.util.Date;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.zjcloud.common.annotation.Excel;
import com.zjcloud.common.core.domain.BaseEntity;

/**
 * 教师信息对象 sc_teacher
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public class ScTeacher extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 教师ID */
    private Long id;

    /** 教师编码 */
    @Excel(name = "教师编码")
    private String teacherCode;

    /** 教师姓名 */
    @Excel(name = "教师姓名")
    private String teacherName;

    /** 性别(M男 F女) */
    @Excel(name = "性别", readConverterExp = "M=男,F=女")
    private String gender;

    /** 出生日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "出生日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date birthDate;

    /** 年龄 */
    @Excel(name = "年龄")
    private Integer age;

    /** 联系电话 */
    @Excel(name = "联系电话")
    private String phone;

    /** 邮箱 */
    @Excel(name = "邮箱")
    private String email;

    /** 身份证号 */
    @Excel(name = "身份证号")
    private String idCard;

    /** 职称(JUNIOR初级 INTERMEDIATE中级 SENIOR高级 PROFESSOR教授) */
    @Excel(name = "职称", readConverterExp = "JUNIOR=初级,INTERMEDIATE=中级,SENIOR=高级,PROFESSOR=教授")
    private String title;

    /** 职务(TEACHER教师 HEAD_TEACHER班主任 DEPARTMENT_HEAD教研组长 GRADE_LEADER年级组长 PRINCIPAL校长) */
    @Excel(name = "职务", readConverterExp = "TEACHER=教师,HEAD_TEACHER=班主任,DEPARTMENT_HEAD=教研组长,GRADE_LEADER=年级组长,PRINCIPAL=校长")
    private String position;

    /** 教师类型(FULL_TIME专职 PART_TIME兼职 SUBSTITUTE代课 INTERN实习) */
    @Excel(name = "教师类型", readConverterExp = "FULL_TIME=专职,PART_TIME=兼职,SUBSTITUTE=代课,INTERN=实习")
    private String teacherType;

    /** 学历(HIGH_SCHOOL高中 COLLEGE大专 BACHELOR本科 MASTER硕士 DOCTOR博士) */
    @Excel(name = "学历", readConverterExp = "HIGH_SCHOOL=高中,COLLEGE=大专,BACHELOR=本科,MASTER=硕士,DOCTOR=博士")
    private String education;

    /** 专业 */
    @Excel(name = "专业")
    private String major;

    /** 毕业院校 */
    @Excel(name = "毕业院校")
    private String graduateSchool;

    /** 入职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date hireDate;

    /** 工作年限 */
    @Excel(name = "工作年限")
    private Integer workYears;

    /** 教学年限 */
    @Excel(name = "教学年限")
    private Integer teachingYears;

    /** 每周最大课时 */
    @Excel(name = "每周最大课时")
    private Integer maxWeeklyPeriods;

    /** 每周最小课时 */
    @Excel(name = "每周最小课时")
    private Integer minWeeklyPeriods;

    /** 当前周课时 */
    @Excel(name = "当前周课时")
    private Integer currentWeeklyPeriods;

    /** 工作负载系数 */
    @Excel(name = "工作负载系数")
    private BigDecimal workloadCoefficient;

    /** 教学能力评级(1-10) */
    @Excel(name = "教学能力评级")
    private Integer teachingRating;

    /** 是否班主任(1是 0否) */
    @Excel(name = "是否班主任", readConverterExp = "1=是,0=否")
    private String isHeadTeacher;

    /** 负责班级ID */
    @Excel(name = "负责班级ID")
    private Long headClassId;

    /** 负责班级名称 */
    @Excel(name = "负责班级名称")
    private String headClassName;

    /** 办公室位置 */
    @Excel(name = "办公室位置")
    private String officeLocation;

    /** 紧急联系人 */
    @Excel(name = "紧急联系人")
    private String emergencyContact;

    /** 紧急联系电话 */
    @Excel(name = "紧急联系电话")
    private String emergencyPhone;

    /** 状态(1在职 0离职) */
    @Excel(name = "状态", readConverterExp = "1=在职,0=离职")
    private String status;

    public void setId(Long id) 
    {
        this.id = id;
    }

    public Long getId() 
    {
        return id;
    }
    public void setTeacherCode(String teacherCode) 
    {
        this.teacherCode = teacherCode;
    }

    public String getTeacherCode() 
    {
        return teacherCode;
    }
    public void setTeacherName(String teacherName) 
    {
        this.teacherName = teacherName;
    }

    public String getTeacherName() 
    {
        return teacherName;
    }
    public void setGender(String gender) 
    {
        this.gender = gender;
    }

    public String getGender() 
    {
        return gender;
    }
    public void setBirthDate(Date birthDate) 
    {
        this.birthDate = birthDate;
    }

    public Date getBirthDate() 
    {
        return birthDate;
    }
    public void setAge(Integer age) 
    {
        this.age = age;
    }

    public Integer getAge() 
    {
        return age;
    }
    public void setPhone(String phone) 
    {
        this.phone = phone;
    }

    public String getPhone() 
    {
        return phone;
    }
    public void setEmail(String email) 
    {
        this.email = email;
    }

    public String getEmail() 
    {
        return email;
    }
    public void setIdCard(String idCard) 
    {
        this.idCard = idCard;
    }

    public String getIdCard() 
    {
        return idCard;
    }
    public void setTitle(String title) 
    {
        this.title = title;
    }

    public String getTitle() 
    {
        return title;
    }
    public void setPosition(String position) 
    {
        this.position = position;
    }

    public String getPosition() 
    {
        return position;
    }
    public void setTeacherType(String teacherType) 
    {
        this.teacherType = teacherType;
    }

    public String getTeacherType() 
    {
        return teacherType;
    }
    public void setEducation(String education) 
    {
        this.education = education;
    }

    public String getEducation() 
    {
        return education;
    }
    public void setMajor(String major) 
    {
        this.major = major;
    }

    public String getMajor() 
    {
        return major;
    }
    public void setGraduateSchool(String graduateSchool) 
    {
        this.graduateSchool = graduateSchool;
    }

    public String getGraduateSchool() 
    {
        return graduateSchool;
    }
    public void setHireDate(Date hireDate) 
    {
        this.hireDate = hireDate;
    }

    public Date getHireDate() 
    {
        return hireDate;
    }
    public void setWorkYears(Integer workYears) 
    {
        this.workYears = workYears;
    }

    public Integer getWorkYears() 
    {
        return workYears;
    }
    public void setTeachingYears(Integer teachingYears) 
    {
        this.teachingYears = teachingYears;
    }

    public Integer getTeachingYears() 
    {
        return teachingYears;
    }
    public void setMaxWeeklyPeriods(Integer maxWeeklyPeriods) 
    {
        this.maxWeeklyPeriods = maxWeeklyPeriods;
    }

    public Integer getMaxWeeklyPeriods() 
    {
        return maxWeeklyPeriods;
    }
    public void setMinWeeklyPeriods(Integer minWeeklyPeriods) 
    {
        this.minWeeklyPeriods = minWeeklyPeriods;
    }

    public Integer getMinWeeklyPeriods() 
    {
        return minWeeklyPeriods;
    }
    public void setCurrentWeeklyPeriods(Integer currentWeeklyPeriods) 
    {
        this.currentWeeklyPeriods = currentWeeklyPeriods;
    }

    public Integer getCurrentWeeklyPeriods() 
    {
        return currentWeeklyPeriods;
    }
    public void setWorkloadCoefficient(BigDecimal workloadCoefficient) 
    {
        this.workloadCoefficient = workloadCoefficient;
    }

    public BigDecimal getWorkloadCoefficient() 
    {
        return workloadCoefficient;
    }
    public void setTeachingRating(Integer teachingRating) 
    {
        this.teachingRating = teachingRating;
    }

    public Integer getTeachingRating() 
    {
        return teachingRating;
    }
    public void setIsHeadTeacher(String isHeadTeacher) 
    {
        this.isHeadTeacher = isHeadTeacher;
    }

    public String getIsHeadTeacher() 
    {
        return isHeadTeacher;
    }
    public void setHeadClassId(Long headClassId) 
    {
        this.headClassId = headClassId;
    }

    public Long getHeadClassId() 
    {
        return headClassId;
    }
    public void setHeadClassName(String headClassName) 
    {
        this.headClassName = headClassName;
    }

    public String getHeadClassName() 
    {
        return headClassName;
    }
    public void setOfficeLocation(String officeLocation) 
    {
        this.officeLocation = officeLocation;
    }

    public String getOfficeLocation() 
    {
        return officeLocation;
    }
    public void setEmergencyContact(String emergencyContact) 
    {
        this.emergencyContact = emergencyContact;
    }

    public String getEmergencyContact() 
    {
        return emergencyContact;
    }
    public void setEmergencyPhone(String emergencyPhone) 
    {
        this.emergencyPhone = emergencyPhone;
    }

    public String getEmergencyPhone() 
    {
        return emergencyPhone;
    }
    public void setStatus(String status) 
    {
        this.status = status;
    }

    public String getStatus() 
    {
        return status;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("teacherCode", getTeacherCode())
            .append("teacherName", getTeacherName())
            .append("gender", getGender())
            .append("birthDate", getBirthDate())
            .append("age", getAge())
            .append("phone", getPhone())
            .append("email", getEmail())
            .append("idCard", getIdCard())
            .append("title", getTitle())
            .append("position", getPosition())
            .append("teacherType", getTeacherType())
            .append("education", getEducation())
            .append("major", getMajor())
            .append("graduateSchool", getGraduateSchool())
            .append("hireDate", getHireDate())
            .append("workYears", getWorkYears())
            .append("teachingYears", getTeachingYears())
            .append("maxWeeklyPeriods", getMaxWeeklyPeriods())
            .append("minWeeklyPeriods", getMinWeeklyPeriods())
            .append("currentWeeklyPeriods", getCurrentWeeklyPeriods())
            .append("workloadCoefficient", getWorkloadCoefficient())
            .append("teachingRating", getTeachingRating())
            .append("isHeadTeacher", getIsHeadTeacher())
            .append("headClassId", getHeadClassId())
            .append("headClassName", getHeadClassName())
            .append("officeLocation", getOfficeLocation())
            .append("emergencyContact", getEmergencyContact())
            .append("emergencyPhone", getEmergencyPhone())
            .append("status", getStatus())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}